(function (window) {
    window.AMapUI_DEBUG = false;
    !function (global) {
        if (!global.AMap) throw new Error("请前置引入高德地图api，参见http://lbs.amap.com/api/javascript-api/gettingstarted/");
    }(window);
    var AMapUI;
    !function () {
        if (!AMapUI || !AMapUI.requirejs) {
            AMapUI ? require = AMapUI : AMapUI = {};
            var requirejs, require, define;
            !function (global, setTimeout) {
                function commentReplace(e, t) {
                    return t || ""
                }

                function isFunction(e) {
                    return "[object Function]" === ostring.call(e)
                }

                function isArray(e) {
                    return "[object Array]" === ostring.call(e)
                }

                function each(e, t) {
                    if (e) {
                        var r;
                        for (r = 0; r < e.length && (!e[r] || !t(e[r], r, e)); r += 1);
                    }
                }

                function eachReverse(e, t) {
                    if (e) {
                        var r;
                        for (r = e.length - 1; r > -1 && (!e[r] || !t(e[r], r, e)); r -= 1);
                    }
                }

                function hasProp(e, t) {
                    return hasOwn.call(e, t)
                }

                function getOwn(e, t) {
                    return hasProp(e, t) && e[t]
                }

                function eachProp(e, t) {
                    var r;
                    for (r in e)if (hasProp(e, r) && t(e[r], r))break
                }

                function mixin(e, t, r, n) {
                    return t && eachProp(t, function (t, i) {
                        !r && hasProp(e, i) || (!n || "object" != typeof t || !t || isArray(t) || isFunction(t) || t instanceof RegExp ? e[i] = t : (e[i] || (e[i] = {}), mixin(e[i], t, r, n)))
                    }), e
                }

                function bind(e, t) {
                    return function () {
                        return t.apply(e, arguments)
                    }
                }

                function scripts() {
                    return document.getElementsByTagName("script")
                }

                function defaultOnError(e) {
                    throw e
                }

                function getGlobal(e) {
                    if (!e)return e;
                    var t = global;
                    return each(e.split("."), function (e) {
                        t = t[e]
                    }), t
                }

                function makeError(e, t, r, n) {
                    var i = new Error(t + "\nhttp://requirejs.org/docs/errors.html#" + e);
                    return i.requireType = e, i.requireModules = n, r && (i.originalError = r), i
                }

                function newContext(e) {
                    function t(e) {
                        var t, r;
                        for (t = 0; t < e.length; t++)if (r = e[t], "." === r) e.splice(t, 1), t -= 1; else if (".." === r) {
                            if (0 === t || 1 === t && ".." === e[2] || ".." === e[t - 1])continue;
                            t > 0 && (e.splice(t - 1, 2), t -= 2)
                        }
                    }

                    function r(e, r, n) {
                        var i, o, a, s, u, c, f, p, d, l, h, m, g = r && r.split("/"), v = w.map, x = v && v["*"];
                        if (e && (e = e.split("/"), f = e.length - 1, w.nodeIdCompat && jsSuffixRegExp.test(e[f]) && (e[f] = e[f].replace(jsSuffixRegExp, "")), "." === e[0].charAt(0) && g && (m = g.slice(0, g.length - 1), e = m.concat(e)), t(e), e = e.join("/")), n && v && (g || x)) {
                            a = e.split("/");
                            e:for (s = a.length; s > 0; s -= 1) {
                                if (c = a.slice(0, s).join("/"), g)for (u = g.length; u > 0; u -= 1)if (o = getOwn(v, g.slice(0, u).join("/")), o && (o = getOwn(o, c))) {
                                    p = o, d = s;
                                    break e
                                }
                                !l && x && getOwn(x, c) && (l = getOwn(x, c), h = s)
                            }
                            !p && l && (p = l, d = h), p && (a.splice(0, d, p), e = a.join("/"))
                        }
                        return i = getOwn(w.pkgs, e), i ? i : e
                    }

                    function n(e) {
                        isBrowser && each(scripts(), function (t) {
                            if (t.getAttribute("data-requiremodule") === e && t.getAttribute("data-requirecontext") === q.contextName)return t.parentNode.removeChild(t), !0
                        })
                    }

                    function i(e) {
                        var t = getOwn(w.paths, e);
                        if (t && isArray(t) && t.length > 1)return t.shift(), q.require.undef(e), q.makeRequire(null, {skipMap: !0})([e]), !0
                    }

                    function o(e) {
                        var t, r = e ? e.indexOf("!") : -1;
                        return r > -1 && (t = e.substring(0, r), e = e.substring(r + 1, e.length)), [t, e]
                    }

                    function a(e, t, n, i) {
                        var a, s, u, c, f = null, p = t ? t.name : null, d = e, l = !0, h = "";
                        return e || (l = !1, e = "_@r" + (C += 1)), c = o(e), f = c[0], e = c[1], f && (f = r(f, p, i), s = getOwn(k, f)), e && (f ? h = s && s.normalize ? s.normalize(e, function (e) {
                                    return r(e, p, i)
                                }) : e.indexOf("!") === -1 ? r(e, p, i) : e : (h = r(e, p, i), c = o(h), f = c[0], h = c[1], n = !0, a = q.nameToUrl(h))), u = !f || s || n ? "" : "_unnormalized" + (T += 1), {
                            prefix: f,
                            name: h,
                            parentMap: t,
                            unnormalized: !!u,
                            url: a,
                            originalName: d,
                            isDefine: l,
                            id: (f ? f + "!" + h : h) + u
                        }
                    }

                    function s(e) {
                        var t = e.id, r = getOwn(M, t);
                        return r || (r = M[t] = new q.Module(e)), r
                    }

                    function u(e, t, r) {
                        var n = e.id, i = getOwn(M, n);
                        !hasProp(k, n) || i && !i.defineEmitComplete ? (i = s(e), i.error && "error" === t ? r(i.error) : i.on(t, r)) : "defined" === t && r(k[n])
                    }

                    function c(e, t) {
                        var r = e.requireModules, n = !1;
                        t ? t(e) : (each(r, function (t) {
                                var r = getOwn(M, t);
                                r && (r.error = e, r.events.error && (n = !0, r.emit("error", e)))
                            }), n || req.onError(e))
                    }

                    function f() {
                        globalDefQueue.length && (each(globalDefQueue, function (e) {
                            var t = e[0];
                            "string" == typeof t && (q.defQueueMap[t] = !0), O.push(e)
                        }), globalDefQueue = [])
                    }

                    function p(e) {
                        delete M[e], delete S[e]
                    }

                    function d(e, t, r) {
                        var n = e.map.id;
                        e.error ? e.emit("error", e.error) : (t[n] = !0, each(e.depMaps, function (n, i) {
                                var o = n.id, a = getOwn(M, o);
                                !a || e.depMatched[i] || r[o] || (getOwn(t, o) ? (e.defineDep(i, k[o]), e.check()) : d(a, t, r))
                            }), r[n] = !0)
                    }

                    function l() {
                        var e, t, r = 1e3 * w.waitSeconds, o = r && q.startTime + r < (new Date).getTime(), a = [], s = [], u = !1, f = !0;
                        if (!x) {
                            if (x = !0, eachProp(S, function (e) {
                                    var r = e.map, c = r.id;
                                    if (e.enabled && (r.isDefine || s.push(e), !e.error))if (!e.inited && o) i(c) ? (t = !0, u = !0) : (a.push(c), n(c)); else if (!e.inited && e.fetched && r.isDefine && (u = !0, !r.prefix))return f = !1
                                }), o && a.length)return e = makeError("timeout", "Load timeout for modules: " + a, null, a), e.contextName = q.contextName, c(e);
                            f && each(s, function (e) {
                                d(e, {}, {})
                            }), o && !t || !u || !isBrowser && !isWebWorker || E || (E = setTimeout(function () {
                                E = 0, l()
                            }, 50)), x = !1
                        }
                    }

                    function h(e) {
                        hasProp(k, e[0]) || s(a(e[0], null, !0)).init(e[1], e[2])
                    }

                    function m(e, t, r, n) {
                        e.detachEvent && !isOpera ? n && e.detachEvent(n, t) : e.removeEventListener(r, t, !1)
                    }

                    function g(e) {
                        var t = e.currentTarget || e.srcElement;
                        return m(t, q.onScriptLoad, "load", "onreadystatechange"), m(t, q.onScriptError, "error"), {
                            node: t,
                            id: t && t.getAttribute("data-requiremodule")
                        }
                    }

                    function v() {
                        var e;
                        for (f(); O.length;) {
                            if (e = O.shift(), null === e[0])return c(makeError("mismatch", "Mismatched anonymous define() module: " + e[e.length - 1]));
                            h(e)
                        }
                        q.defQueueMap = {}
                    }

                    var x, b, q, y, E, w = {
                        waitSeconds: 7,
                        baseUrl: "./",
                        paths: {},
                        bundles: {},
                        pkgs: {},
                        shim: {},
                        config: {}
                    }, M = {}, S = {}, A = {}, O = [], k = {}, j = {}, I = {}, C = 1, T = 1;
                    return y = {
                        require: function (e) {
                            return e.require ? e.require : e.require = q.makeRequire(e.map)
                        }, exports: function (e) {
                            if (e.usingExports = !0, e.map.isDefine)return e.exports ? k[e.map.id] = e.exports : e.exports = k[e.map.id] = {}
                        }, module: function (e) {
                            return e.module ? e.module : e.module = {
                                    id: e.map.id, uri: e.map.url, config: function () {
                                        return getOwn(w.config, e.map.id) || {}
                                    }, exports: e.exports || (e.exports = {})
                                }
                        }
                    }, b = function (e) {
                        this.events = getOwn(A, e.id) || {}, this.map = e, this.shim = getOwn(w.shim, e.id), this.depExports = [], this.depMaps = [], this.depMatched = [], this.pluginMaps = {}, this.depCount = 0
                    }, b.prototype = {
                        init: function (e, t, r, n) {
                            n = n || {}, this.inited || (this.factory = t, r ? this.on("error", r) : this.events.error && (r = bind(this, function (e) {
                                    this.emit("error", e)
                                })), this.depMaps = e && e.slice(0), this.errback = r, this.inited = !0, this.ignore = n.ignore, n.enabled || this.enabled ? this.enable() : this.check())
                        }, defineDep: function (e, t) {
                            this.depMatched[e] || (this.depMatched[e] = !0, this.depCount -= 1, this.depExports[e] = t)
                        }, fetch: function () {
                            if (!this.fetched) {
                                this.fetched = !0, q.startTime = (new Date).getTime();
                                var e = this.map;
                                return this.shim ? void q.makeRequire(this.map, {enableBuildCallback: !0})(this.shim.deps || [], bind(this, function () {
                                        return e.prefix ? this.callPlugin() : this.load()
                                    })) : e.prefix ? this.callPlugin() : this.load()
                            }
                        }, load: function () {
                            var e = this.map.url;
                            j[e] || (j[e] = !0, q.load(this.map.id, e))
                        }, check: function () {
                            if (this.enabled && !this.enabling) {
                                var e, t, r = this.map.id, n = this.depExports, i = this.exports, o = this.factory;
                                if (this.inited) {
                                    if (this.error) this.emit("error", this.error); else if (!this.defining) {
                                        if (this.defining = !0, this.depCount < 1 && !this.defined) {
                                            if (isFunction(o)) {
                                                if (this.events.error && this.map.isDefine || req.onError !== defaultOnError)try {
                                                    i = q.execCb(r, o, n, i)
                                                } catch (t) {
                                                    e = t
                                                } else i = q.execCb(r, o, n, i);
                                                if (this.map.isDefine && void 0 === i && (t = this.module, t ? i = t.exports : this.usingExports && (i = this.exports)), e)return e.requireMap = this.map, e.requireModules = this.map.isDefine ? [this.map.id] : null, e.requireType = this.map.isDefine ? "define" : "require", c(this.error = e)
                                            } else i = o;
                                            if (this.exports = i, this.map.isDefine && !this.ignore && (k[r] = i, req.onResourceLoad)) {
                                                var a = [];
                                                each(this.depMaps, function (e) {
                                                    a.push(e.normalizedMap || e)
                                                }), req.onResourceLoad(q, this.map, a)
                                            }
                                            p(r), this.defined = !0
                                        }
                                        this.defining = !1, this.defined && !this.defineEmitted && (this.defineEmitted = !0, this.emit("defined", this.exports), this.defineEmitComplete = !0)
                                    }
                                } else hasProp(q.defQueueMap, r) || this.fetch()
                            }
                        }, callPlugin: function () {
                            var e = this.map, t = e.id, n = a(e.prefix);
                            this.depMaps.push(n), u(n, "defined", bind(this, function (n) {
                                var i, o, f, d = getOwn(I, this.map.id), l = this.map.name, h = this.map.parentMap ? this.map.parentMap.name : null, m = q.makeRequire(e.parentMap, {enableBuildCallback: !0});
                                return this.map.unnormalized ? (n.normalize && (l = n.normalize(l, function (e) {
                                            return r(e, h, !0)
                                        }) || ""), o = a(e.prefix + "!" + l, this.map.parentMap), u(o, "defined", bind(this, function (e) {
                                        this.map.normalizedMap = o, this.init([], function () {
                                            return e
                                        }, null, {enabled: !0, ignore: !0})
                                    })), f = getOwn(M, o.id), void(f && (this.depMaps.push(o), this.events.error && f.on("error", bind(this, function (e) {
                                        this.emit("error", e)
                                    })), f.enable()))) : d ? (this.map.url = q.nameToUrl(d), void this.load()) : (i = bind(this, function (e) {
                                            this.init([], function () {
                                                return e
                                            }, null, {enabled: !0})
                                        }), i.error = bind(this, function (e) {
                                            this.inited = !0, this.error = e, e.requireModules = [t], eachProp(M, function (e) {
                                                0 === e.map.id.indexOf(t + "_unnormalized") && p(e.map.id)
                                            }), c(e)
                                        }), i.fromText = bind(this, function (r, n) {
                                            var o = e.name, u = a(o), f = useInteractive;
                                            n && (r = n), f && (useInteractive = !1), s(u), hasProp(w.config, t) && (w.config[o] = w.config[t]);
                                            try {
                                                req.exec(r)
                                            } catch (e) {
                                                return c(makeError("fromtexteval", "fromText eval for " + t + " failed: " + e, e, [t]))
                                            }
                                            f && (useInteractive = !0), this.depMaps.push(u), q.completeLoad(o), m([o], i)
                                        }), void n.load(e.name, m, i, w))
                            })), q.enable(n, this), this.pluginMaps[n.id] = n
                        }, enable: function () {
                            S[this.map.id] = this, this.enabled = !0, this.enabling = !0, each(this.depMaps, bind(this, function (e, t) {
                                var r, n, i;
                                if ("string" == typeof e) {
                                    if (e = a(e, this.map.isDefine ? this.map : this.map.parentMap, !1, !this.skipMap), this.depMaps[t] = e, i = getOwn(y, e.id))return void(this.depExports[t] = i(this));
                                    this.depCount += 1, u(e, "defined", bind(this, function (e) {
                                        this.undefed || (this.defineDep(t, e), this.check())
                                    })), this.errback ? u(e, "error", bind(this, this.errback)) : this.events.error && u(e, "error", bind(this, function (e) {
                                            this.emit("error", e)
                                        }))
                                }
                                r = e.id, n = M[r], hasProp(y, r) || !n || n.enabled || q.enable(e, this)
                            })), eachProp(this.pluginMaps, bind(this, function (e) {
                                var t = getOwn(M, e.id);
                                t && !t.enabled && q.enable(e, this)
                            })), this.enabling = !1, this.check()
                        }, on: function (e, t) {
                            var r = this.events[e];
                            r || (r = this.events[e] = []), r.push(t)
                        }, emit: function (e, t) {
                            each(this.events[e], function (e) {
                                e(t)
                            }), "error" === e && delete this.events[e]
                        }
                    }, q = {
                        config: w,
                        contextName: e,
                        registry: M,
                        defined: k,
                        urlFetched: j,
                        defQueue: O,
                        defQueueMap: {},
                        Module: b,
                        makeModuleMap: a,
                        nextTick: req.nextTick,
                        onError: c,
                        configure: function (e) {
                            if (e.baseUrl && "/" !== e.baseUrl.charAt(e.baseUrl.length - 1) && (e.baseUrl += "/"), "string" == typeof e.urlArgs) {
                                var t = e.urlArgs;
                                e.urlArgs = function (e, r) {
                                    return (r.indexOf("?") === -1 ? "?" : "&") + t
                                }
                            }
                            var r = w.shim, n = {paths: !0, bundles: !0, config: !0, map: !0};
                            eachProp(e, function (e, t) {
                                n[t] ? (w[t] || (w[t] = {}), mixin(w[t], e, !0, !0)) : w[t] = e
                            }), e.bundles && eachProp(e.bundles, function (e, t) {
                                each(e, function (e) {
                                    e !== t && (I[e] = t)
                                })
                            }), e.shim && (eachProp(e.shim, function (e, t) {
                                isArray(e) && (e = {deps: e}), !e.exports && !e.init || e.exportsFn || (e.exportsFn = q.makeShimExports(e)), r[t] = e
                            }), w.shim = r), e.packages && each(e.packages, function (e) {
                                var t, r;
                                e = "string" == typeof e ? {name: e} : e, r = e.name, t = e.location, t && (w.paths[r] = e.location), w.pkgs[r] = e.name + "/" + (e.main || "main").replace(currDirRegExp, "").replace(jsSuffixRegExp, "")
                            }), eachProp(M, function (e, t) {
                                e.inited || e.map.unnormalized || (e.map = a(t, null, !0))
                            }), (e.deps || e.callback) && q.require(e.deps || [], e.callback)
                        },
                        makeShimExports: function (e) {
                            function t() {
                                var t;
                                return e.init && (t = e.init.apply(global, arguments)), t || e.exports && getGlobal(e.exports)
                            }

                            return t
                        },
                        makeRequire: function (t, i) {
                            function o(r, n, u) {
                                var f, p, d;
                                return i.enableBuildCallback && n && isFunction(n) && (n.__requireJsBuild = !0), "string" == typeof r ? isFunction(n) ? c(makeError("requireargs", "Invalid require call"), u) : t && hasProp(y, r) ? y[r](M[t.id]) : req.get ? req.get(q, r, t, o) : (p = a(r, t, !1, !0), f = p.id, hasProp(k, f) ? k[f] : c(makeError("notloaded", 'Module name "' + f + '" has not been loaded yet for context: ' + e + (t ? "" : ". Use require([])")))) : (v(), q.nextTick(function () {
                                        v(), d = s(a(null, t)), d.skipMap = i.skipMap, d.init(r, n, u, {enabled: !0}), l()
                                    }), o)
                            }

                            return i = i || {}, mixin(o, {
                                isBrowser: isBrowser, toUrl: function (e) {
                                    var n, i = e.lastIndexOf("."), o = e.split("/")[0], a = "." === o || ".." === o;
                                    return i !== -1 && (!a || i > 1) && (n = e.substring(i, e.length), e = e.substring(0, i)), q.nameToUrl(r(e, t && t.id, !0), n, !0)
                                }, defined: function (e) {
                                    return hasProp(k, a(e, t, !1, !0).id)
                                }, specified: function (e) {
                                    return e = a(e, t, !1, !0).id, hasProp(k, e) || hasProp(M, e)
                                }
                            }), t || (o.undef = function (e) {
                                f();
                                var r = a(e, t, !0), i = getOwn(M, e);
                                i.undefed = !0, n(e), delete k[e], delete j[r.url], delete A[e], eachReverse(O, function (t, r) {
                                    t[0] === e && O.splice(r, 1)
                                }), delete q.defQueueMap[e], i && (i.events.defined && (A[e] = i.events), p(e))
                            }), o
                        },
                        enable: function (e) {
                            var t = getOwn(M, e.id);
                            t && s(e).enable()
                        },
                        completeLoad: function (e) {
                            var t, r, n, o = getOwn(w.shim, e) || {}, a = o.exports;
                            for (f(); O.length;) {
                                if (r = O.shift(), null === r[0]) {
                                    if (r[0] = e, t)break;
                                    t = !0
                                } else r[0] === e && (t = !0);
                                h(r)
                            }
                            if (q.defQueueMap = {}, n = getOwn(M, e), !t && !hasProp(k, e) && n && !n.inited) {
                                if (!(!w.enforceDefine || a && getGlobal(a)))return i(e) ? void 0 : c(makeError("nodefine", "No define call for " + e, null, [e]));
                                h([e, o.deps || [], o.exportsFn])
                            }
                            l()
                        },
                        nameToUrl: function (e, t, r) {
                            var n, i, o, a, s, u, c, f = getOwn(w.pkgs, e);
                            if (f && (e = f), c = getOwn(I, e))return q.nameToUrl(c, t, r);
                            if (req.jsExtRegExp.test(e)) s = e + (t || ""); else {
                                for (n = w.paths, i = e.split("/"), o = i.length; o > 0; o -= 1)if (a = i.slice(0, o).join("/"), u = getOwn(n, a)) {
                                    isArray(u) && (u = u[0]), i.splice(0, o, u);
                                    break
                                }
                                s = i.join("/"), s += t || (/^data\:|^blob\:|\?/.test(s) || r ? "" : ".js"), s = ("/" === s.charAt(0) || s.match(/^[\w\+\.\-]+:/) ? "" : w.baseUrl) + s
                            }
                            return w.urlArgs && !/^blob\:/.test(s) ? s + w.urlArgs(e, s) : s
                        },
                        load: function (e, t) {
                            req.load(q, e, t)
                        },
                        execCb: function (e, t, r, n) {
                            return t.apply(n, r)
                        },
                        onScriptLoad: function (e) {
                            if ("load" === e.type || readyRegExp.test((e.currentTarget || e.srcElement).readyState)) {
                                interactiveScript = null;
                                var t = g(e);
                                q.completeLoad(t.id)
                            }
                        },
                        onScriptError: function (e) {
                            var t = g(e);
                            if (!i(t.id)) {
                                var r = [];
                                return eachProp(M, function (e, n) {
                                    0 !== n.indexOf("_@r") && each(e.depMaps, function (e) {
                                        if (e.id === t.id)return r.push(n), !0
                                    })
                                }), c(makeError("scripterror", 'Script error for "' + t.id + (r.length ? '", needed by: ' + r.join(", ") : '"'), e, [t.id]))
                            }
                        }
                    }, q.require = q.makeRequire(), q
                }

                function getInteractiveScript() {
                    return interactiveScript && "interactive" === interactiveScript.readyState ? interactiveScript : (eachReverse(scripts(), function (e) {
                            if ("interactive" === e.readyState)return interactiveScript = e
                        }), interactiveScript)
                }

                var req, s, head, baseElement, dataMain, src, interactiveScript, currentlyAddingScript, mainScript, subPath, version = "2.3.2", commentRegExp = /\/\*[\s\S]*?\*\/|([^:"'=]|^)\/\/.*$/gm, cjsRequireRegExp = /[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g, jsSuffixRegExp = /\.js$/, currDirRegExp = /^\.\//, op = Object.prototype, ostring = op.toString, hasOwn = op.hasOwnProperty, isBrowser = !("undefined" == typeof window || "undefined" == typeof navigator || !window.document), isWebWorker = !isBrowser && "undefined" != typeof importScripts, readyRegExp = isBrowser && "PLAYSTATION 3" === navigator.platform ? /^complete$/ : /^(complete|loaded)$/, defContextName = "_", isOpera = "undefined" != typeof opera && "[object Opera]" === opera.toString(), contexts = {}, cfg = {}, globalDefQueue = [], useInteractive = !1;
                if ("undefined" == typeof define) {
                    if ("undefined" != typeof requirejs) {
                        if (isFunction(requirejs))return;
                        cfg = requirejs, requirejs = void 0
                    }
                    "undefined" == typeof require || isFunction(require) || (cfg = require, require = void 0), req = requirejs = function (e, t, r, n) {
                        var i, o, a = defContextName;
                        return isArray(e) || "string" == typeof e || (o = e, isArray(t) ? (e = t, t = r, r = n) : e = []), o && o.context && (a = o.context), i = getOwn(contexts, a), i || (i = contexts[a] = req.s.newContext(a)), o && i.configure(o), i.require(e, t, r)
                    }, req.config = function (e) {
                        return req(e)
                    }, req.nextTick = "undefined" != typeof setTimeout ? function (e) {
                            setTimeout(e, 4)
                        } : function (e) {
                            e()
                        }, require || (require = req), req.version = version, req.jsExtRegExp = /^\/|:|\?|\.js$/, req.isBrowser = isBrowser, s = req.s = {
                        contexts: contexts,
                        newContext: newContext
                    }, req({}), each(["toUrl", "undef", "defined", "specified"], function (e) {
                        req[e] = function () {
                            var t = contexts[defContextName];
                            return t.require[e].apply(t, arguments)
                        }
                    }), isBrowser && (head = s.head = document.getElementsByTagName("head")[0], baseElement = document.getElementsByTagName("base")[0], baseElement && (head = s.head = baseElement.parentNode)), req.onError = defaultOnError, req.createNode = function (e, t, r) {
                        var n = e.xhtml ? document.createElementNS("http://www.w3.org/1999/xhtml", "html:script") : document.createElement("script");
                        return n.type = e.scriptType || "text/javascript", n.charset = "utf-8", n.async = !0, n
                    }, req.load = function (e, t, r) {
                        var n, i = e && e.config || {};
                        if (isBrowser)return n = req.createNode(i, t, r), n.setAttribute("data-requirecontext", e.contextName), n.setAttribute("data-requiremodule", t), !n.attachEvent || n.attachEvent.toString && n.attachEvent.toString().indexOf("[native code") < 0 || isOpera ? (n.addEventListener("load", e.onScriptLoad, !1), n.addEventListener("error", e.onScriptError, !1)) : (useInteractive = !0, n.attachEvent("onreadystatechange", e.onScriptLoad)), n.src = r, i.onNodeCreated && i.onNodeCreated(n, i, t, r), currentlyAddingScript = n, baseElement ? head.insertBefore(n, baseElement) : head.appendChild(n), currentlyAddingScript = null, n;
                        if (isWebWorker)try {
                            setTimeout(function () {
                            }, 0), importScripts(r), e.completeLoad(t)
                        } catch (n) {
                            e.onError(makeError("importscripts", "importScripts failed for " + t + " at " + r, n, [t]))
                        }
                    }, isBrowser && !cfg.skipDataMain && eachReverse(scripts(), function (e) {
                        if (head || (head = e.parentNode), dataMain = e.getAttribute("data-main"))return mainScript = dataMain, cfg.baseUrl || mainScript.indexOf("!") !== -1 || (src = mainScript.split("/"), mainScript = src.pop(), subPath = src.length ? src.join("/") + "/" : "./", cfg.baseUrl = subPath), mainScript = mainScript.replace(jsSuffixRegExp, ""), req.jsExtRegExp.test(mainScript) && (mainScript = dataMain), cfg.deps = cfg.deps ? cfg.deps.concat(mainScript) : [mainScript], !0
                    }), define = function (e, t, r) {
                        var n, i;
                        "string" != typeof e && (r = t, t = e, e = null), isArray(t) || (r = t, t = null), !t && isFunction(r) && (t = [], r.length && (r.toString().replace(commentRegExp, commentReplace).replace(cjsRequireRegExp, function (e, r) {
                            t.push(r)
                        }), t = (1 === r.length ? ["require"] : ["require", "exports", "module"]).concat(t))), useInteractive && (n = currentlyAddingScript || getInteractiveScript(), n && (e || (e = n.getAttribute("data-requiremodule")), i = contexts[n.getAttribute("data-requirecontext")])), i ? (i.defQueue.push([e, t, r]), i.defQueueMap[e] = !0) : globalDefQueue.push([e, t, r])
                    }, define.amd = {jQuery: !0}, req.exec = function (text) {
                        return eval(text)
                    }, req(cfg)
                }
            }(this, "undefined" == typeof setTimeout ? void 0 : setTimeout), AMapUI.requirejs = requirejs, AMapUI.require = require, AMapUI.define = define
        }
    }(), AMapUI.define("polyfill/require/require", function () {
    }), AMapUI.define("polyfill/require/require-css/css", [], function () {
        if ("undefined" == typeof window)return {
            load: function (e, t, r) {
                r()
            }
        };
        var e = document.getElementsByTagName("head")[0], t = window.navigator.userAgent.match(/Trident\/([^ ;]*)|AppleWebKit\/([^ ;]*)|Opera\/([^ ;]*)|rv\:([^ ;]*)(.*?)Gecko\/([^ ;]*)|MSIE\s([^ ;]*)|AndroidWebKit\/([^ ;]*)/) || 0, r = !1, n = !0;
        t[1] || t[7] ? r = parseInt(t[1]) < 6 || parseInt(t[7]) <= 9 : t[2] || t[8] ? n = !1 : t[4] && (r = parseInt(t[4]) < 18);
        var i = {};
        i.pluginBuilder = "./css-builder";
        var o, a, s, u = function () {
            o = document.createElement("style"), e.appendChild(o), a = o.styleSheet || o.sheet
        }, c = 0, f = [], p = function (e) {
            a.addImport(e), o.onload = function () {
                d()
            }, c++, 31 == c && (u(), c = 0)
        }, d = function () {
            s();
            var e = f.shift();
            return e ? (s = e[1], void p(e[0])) : void(s = null)
        }, l = function (e, t) {
            if (a && a.addImport || u(), a && a.addImport) s ? f.push([e, t]) : (p(e), s = t); else {
                o.textContent = '@import "' + e + '";';
                var r = setInterval(function () {
                    try {
                        o.sheet.cssRules, clearInterval(r), t()
                    } catch (e) {
                    }
                }, 10)
            }
        }, h = function (t, r) {
            var i = document.createElement("link");
            if (i.type = "text/css", i.rel = "stylesheet", n) i.onload = function () {
                i.onload = function () {
                }, setTimeout(r, 7)
            }; else var o = setInterval(function () {
                for (var e = 0; e < document.styleSheets.length; e++) {
                    var t = document.styleSheets[e];
                    if (t.href == i.href)return clearInterval(o), r()
                }
            }, 10);
            i.href = t, e.appendChild(i)
        };
        return i.normalize = function (e, t) {
            return ".css" == e.substr(e.length - 4, 4) && (e = e.substr(0, e.length - 4)), t(e)
        }, i.load = function (e, t, n, i) {
            (r ? l : h)(t.toUrl(e + ".css"), n)
        }, i
    }), AMapUI.define("polyfill/require/require-css/normalize", [], function () {
        function e(e, n, i) {
            if (e.match(s) || e.match(a))return e;
            e = o(e);
            var u = i.match(a), c = n.match(a);
            return !c || u && u[1] == c[1] && u[2] == c[2] ? r(t(e, n), i) : t(e, n)
        }

        function t(e, t) {
            if ("./" == e.substr(0, 2) && (e = e.substr(2)), e.match(s) || e.match(a))return e;
            var r = t.split("/"), n = e.split("/");
            for (r.pop(); curPart = n.shift();)".." == curPart ? r.pop() : r.push(curPart);
            return r.join("/")
        }

        function r(e, t) {
            var r = t.split("/");
            for (r.pop(), t = r.join("/") + "/", i = 0; t.substr(i, 1) == e.substr(i, 1);)i++;
            for (; "/" != t.substr(i, 1);)i--;
            t = t.substr(i + 1), e = e.substr(i + 1), r = t.split("/");
            var n = e.split("/");
            for (out = ""; r.shift();)out += "../";
            for (; curPart = n.shift();)out += curPart + "/";
            return out.substr(0, out.length - 1)
        }

        var n = /([^:])\/+/g, o = function (e) {
            return e.replace(n, "$1/")
        }, a = /[^\:\/]*:\/\/([^\/])*/, s = /^(\/|data:)/, u = function (r, n, i, a) {
            n = o(n), i = o(i);
            for (var s, u, r, c = /@import\s*("([^"]*)"|'([^']*)')|url\s*\((?!#)\s*(\s*"([^"]*)"|'([^']*)'|[^\)]*\s*)\s*\)/gi; s = c.exec(r);) {
                u = s[3] || s[2] || s[5] || s[6] || s[4];
                var f;
                f = e(u, n, i), f !== u && a && (f = t(f, a));
                var p = s[5] || s[6] ? 1 : 0;
                r = r.substr(0, c.lastIndex - u.length - p - 1) + f + r.substr(c.lastIndex - p - 1), c.lastIndex = c.lastIndex + (f.length - u.length)
            }
            return r
        };
        return u.convertURIBase = e, u.absoluteURI = t, u.relativeURI = r, u
    }), AMapUI.define("polyfill/require/require-text/text", ["module"], function (e) {
        "use strict";
        function t(e, t) {
            return void 0 === e || "" === e ? t : e
        }

        function r(e, r, n, i) {
            if (r === i)return !0;
            if (e === n) {
                if ("http" === e)return t(r, "80") === t(i, "80");
                if ("https" === e)return t(r, "443") === t(i, "443")
            }
            return !1
        }

        var n, i, o, a, s, u = ["Msxml2.XMLHTTP", "Microsoft.XMLHTTP", "Msxml2.XMLHTTP.4.0"], c = /^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im, f = /<body[^>]*>\s*([\s\S]+)\s*<\/body>/im, p = "undefined" != typeof location && location.href, d = p && location.protocol && location.protocol.replace(/\:/, ""), l = p && location.hostname, h = p && (location.port || void 0), m = {}, g = e.config && e.config() || {};
        return n = {
            version: "2.0.15", strip: function (e) {
                if (e) {
                    e = e.replace(c, "");
                    var t = e.match(f);
                    t && (e = t[1])
                } else e = "";
                return e
            }, jsEscape: function (e) {
                return e.replace(/(['\\])/g, "\\$1").replace(/[\f]/g, "\\f").replace(/[\b]/g, "\\b").replace(/[\n]/g, "\\n").replace(/[\t]/g, "\\t").replace(/[\r]/g, "\\r").replace(/[\u2028]/g, "\\u2028").replace(/[\u2029]/g, "\\u2029")
            }, createXhr: g.createXhr || function () {
                var e, t, r;
                if ("undefined" != typeof XMLHttpRequest)return new XMLHttpRequest;
                if ("undefined" != typeof ActiveXObject)for (t = 0; t < 3; t += 1) {
                    r = u[t];
                    try {
                        e = new ActiveXObject(r)
                    } catch (e) {
                    }
                    if (e) {
                        u = [r];
                        break
                    }
                }
                return e
            }, parseName: function (e) {
                var t, r, n, i = !1, o = e.lastIndexOf("."), a = 0 === e.indexOf("./") || 0 === e.indexOf("../");
                return o !== -1 && (!a || o > 1) ? (t = e.substring(0, o), r = e.substring(o + 1)) : t = e, n = r || t, o = n.indexOf("!"), o !== -1 && (i = "strip" === n.substring(o + 1), n = n.substring(0, o), r ? r = n : t = n), {
                    moduleName: t,
                    ext: r,
                    strip: i
                }
            }, xdRegExp: /^((\w+)\:)?\/\/([^\/\\]+)/, useXhr: function (e, t, i, o) {
                var a, s, u, c = n.xdRegExp.exec(e);
                return !c || (a = c[2], s = c[3], s = s.split(":"), u = s[1], s = s[0], (!a || a === t) && (!s || s.toLowerCase() === i.toLowerCase()) && (!u && !s || r(a, u, t, o)))
            }, finishLoad: function (e, t, r, i) {
                r = t ? n.strip(r) : r, g.isBuild && (m[e] = r), i(r)
            }, load: function (e, t, r, i) {
                if (i && i.isBuild && !i.inlineText)return void r();
                g.isBuild = i && i.isBuild;
                var o = n.parseName(e), a = o.moduleName + (o.ext ? "." + o.ext : ""), s = t.toUrl(a), u = g.useXhr || n.useXhr;
                return 0 === s.indexOf("empty:") ? void r() : void(!p || u(s, d, l, h) ? n.get(s, function (t) {
                            n.finishLoad(e, o.strip, t, r)
                        }, function (e) {
                            r.error && r.error(e)
                        }) : t([a], function (e) {
                            n.finishLoad(o.moduleName + "." + o.ext, o.strip, e, r)
                        }))
            }, write: function (e, t, r, i) {
                if (m.hasOwnProperty(t)) {
                    var o = n.jsEscape(m[t]);
                    r.asModule(e + "!" + t, "define(function () { return '" + o + "';});\n")
                }
            }, writeFile: function (e, t, r, i, o) {
                var a = n.parseName(t), s = a.ext ? "." + a.ext : "", u = a.moduleName + s, c = r.toUrl(a.moduleName + s) + ".js";
                n.load(u, r, function (t) {
                    var r = function (e) {
                        return i(c, e)
                    };
                    r.asModule = function (e, t) {
                        return i.asModule(e, c, t)
                    }, n.write(e, u, r, o)
                }, o)
            }
        }, "node" === g.env || !g.env && "undefined" != typeof process && process.versions && process.versions.node && !process.versions["node-webkit"] && !process.versions["atom-shell"] ? (i = require.nodeRequire("fs"), n.get = function (e, t, r) {
                try {
                    var n = i.readFileSync(e, "utf8");
                    "\ufeff" === n[0] && (n = n.substring(1)), t(n)
                } catch (e) {
                    r && r(e)
                }
            }) : "xhr" === g.env || !g.env && n.createXhr() ? n.get = function (e, t, r, i) {
                    var o, a = n.createXhr();
                    if (a.open("GET", e, !0), i)for (o in i)i.hasOwnProperty(o) && a.setRequestHeader(o.toLowerCase(), i[o]);
                    g.onXhr && g.onXhr(a, e), a.onreadystatechange = function (n) {
                        var i, o;
                        4 === a.readyState && (i = a.status || 0, i > 399 && i < 600 ? (o = new Error(e + " HTTP status: " + i), o.xhr = a, r && r(o)) : t(a.responseText), g.onXhrComplete && g.onXhrComplete(a, e))
                    }, a.send(null)
                } : "rhino" === g.env || !g.env && "undefined" != typeof Packages && "undefined" != typeof java ? n.get = function (e, t) {
                        var r, n, i = "utf-8", o = new java.io.File(e), a = java.lang.System.getProperty("line.separator"), s = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(o), i)), u = "";
                        try {
                            for (r = new java.lang.StringBuffer, n = s.readLine(), n && n.length() && 65279 === n.charAt(0) && (n = n.substring(1)), null !== n && r.append(n); null !== (n = s.readLine());)r.append(a), r.append(n);
                            u = String(r.toString())
                        } finally {
                            s.close()
                        }
                        t(u)
                    } : ("xpconnect" === g.env || !g.env && "undefined" != typeof Components && Components.classes && Components.interfaces) && (o = Components.classes, a = Components.interfaces, Components.utils["import"]("resource://gre/modules/FileUtils.jsm"), s = "@mozilla.org/windows-registry-key;1" in o, n.get = function (e, t) {
                        var r, n, i, u = {};
                        s && (e = e.replace(/\//g, "\\")), i = new FileUtils.File(e);
                        try {
                            r = o["@mozilla.org/network/file-input-stream;1"].createInstance(a.nsIFileInputStream), r.init(i, 1, 0, !1), n = o["@mozilla.org/intl/converter-input-stream;1"].createInstance(a.nsIConverterInputStream), n.init(r, "utf-8", r.available(), a.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER), n.readString(r.available(), u), n.close(), r.close(), t(u.value)
                        } catch (e) {
                            throw new Error((i && i.path || "") + ": " + e)
                        }
                    }), n
    }), AMapUI.define("polyfill/require/require-json/json", ["text"], function (text) {
        function cacheBust(e) {
            return e = e.replace(CACHE_BUST_FLAG, ""), e += e.indexOf("?") < 0 ? "?" : "&", e + CACHE_BUST_QUERY_PARAM + "=" + Math.round(2147483647 * Math.random())
        }

        var CACHE_BUST_QUERY_PARAM = "bust", CACHE_BUST_FLAG = "!bust", jsonParse = "undefined" != typeof JSON && "function" == typeof JSON.parse ? JSON.parse : function (val) {
                return eval("(" + val + ")")
            }, buildMap = {};
        return {
            load: function (e, t, r, n) {
                n.isBuild && (n.inlineJSON === !1 || e.indexOf(CACHE_BUST_QUERY_PARAM + "=") !== -1) || 0 === t.toUrl(e).indexOf("empty:") ? r(null) : text.get(t.toUrl(e), function (t) {
                        var i;
                        if (n.isBuild) buildMap[e] = t, r(t); else {
                            try {
                                i = jsonParse(t)
                            } catch (e) {
                                r.error(e)
                            }
                            r(i)
                        }
                    }, r.error, {accept: "application/json"})
            }, normalize: function (e, t) {
                return e.indexOf(CACHE_BUST_FLAG) !== -1 && (e = cacheBust(e)), t(e)
            }, write: function (e, t, r) {
                if (t in buildMap) {
                    var n = buildMap[t];
                    r('define("' + e + "!" + t + '", function(){ return ' + n + ";});\n")
                }
            }
        }
    }), AMapUI.define("_auto/req-lib", function () {
    });
    AMapUI.define("lib/utils", [], function () {
        function setLogger(logger) {
            logger.debug || (logger.debug = logger.info);
            utils.logger = utils.log = logger;
        }

        var utils, defaultLogger = console, emptyfunc = function () {
        }, slientLogger = {
            log: emptyfunc,
            error: emptyfunc,
            warn: emptyfunc,
            info: emptyfunc,
            debug: emptyfunc,
            trace: emptyfunc
        };
        utils = {
            slientLogger: slientLogger,
            setLogger: setLogger,
            setDebugMode: function (on) {
                setLogger(on ? defaultLogger : slientLogger);
            },
            now: Date.now || function () {
                return new Date().getTime();
            },
            bind: function (fn, thisArg) {
                return fn.bind ? fn.bind(thisArg) : function () {
                        return fn.apply(thisArg, arguments);
                    };
            },
            domReady: function (callback) {
                /complete|loaded|interactive/.test(document.readyState) ? callback() : document.addEventListener("DOMContentLoaded", function () {
                        callback();
                    }, !1);
            },
            forEach: function (array, callback, thisArg) {
                if (array.forEach) return array.forEach(callback, thisArg);
                for (var i = 0, len = array.length; i < len; i++) callback.call(thisArg, array[i], i);
            },
            keys: function (obj) {
                if (Object.keys) return Object.keys(obj);
                var keys = [];
                for (var k in obj) obj.hasOwnProperty(k) && keys.push(k);
                return keys;
            },
            map: function (array, callback, thisArg) {
                if (array.map) return array.map(callback, thisArg);
                for (var newArr = [], i = 0, len = array.length; i < len; i++) newArr[i] = callback.call(thisArg, array[i], i);
                return newArr;
            },
            arrayIndexOf: function (array, searchElement, fromIndex) {
                if (array.indexOf) return array.indexOf(searchElement, fromIndex);
                var k, o = array, len = o.length >>> 0;
                if (0 === len) return -1;
                var n = 0 | fromIndex;
                if (n >= len) return -1;
                k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
                for (; k < len;) {
                    if (k in o && o[k] === searchElement) return k;
                    k++;
                }
                return -1;
            },
            extend: function (dst) {
                dst || (dst = {});
                return utils.extendObjs(dst, Array.prototype.slice.call(arguments, 1));
            },
            nestExtendObjs: function (dst, objs) {
                dst || (dst = {});
                for (var i = 0, len = objs.length; i < len; i++) {
                    var source = objs[i];
                    if (source) for (var prop in source) source.hasOwnProperty(prop) && (utils.isObject(dst[prop]) && utils.isObject(source[prop]) ? dst[prop] = utils.nestExtendObjs({}, [dst[prop], source[prop]]) : dst[prop] = source[prop]);
                }
                return dst;
            },
            extendObjs: function (dst, objs) {
                dst || (dst = {});
                for (var i = 0, len = objs.length; i < len; i++) {
                    var source = objs[i];
                    if (source) for (var prop in source) source.hasOwnProperty(prop) && (dst[prop] = source[prop]);
                }
                return dst;
            },
            subset: function (props) {
                var sobj = {};
                if (!props || !props.length) return sobj;
                this.isArray(props) || (props = [props]);
                utils.forEach(Array.prototype.slice.call(arguments, 1), function (source) {
                    if (source) for (var i = 0, len = props.length; i < len; i++) source.hasOwnProperty(props[i]) && (sobj[props[i]] = source[props[i]]);
                });
                return sobj;
            },
            isArray: function (obj) {
                return Array.isArray ? Array.isArray(obj) : "[object Array]" === Object.prototype.toString.call(obj);
            },
            isObject: function (obj) {
                return "[object Object]" === Object.prototype.toString.call(obj);
            },
            isFunction: function (obj) {
                return "[object Function]" === Object.prototype.toString.call(obj);
            },
            isNumber: function (obj) {
                return "[object Number]" === Object.prototype.toString.call(obj);
            },
            isString: function (obj) {
                return "[object String]" === Object.prototype.toString.call(obj);
            },
            isHTMLElement: function (n) {
                return window["HTMLElement"] || window["Element"] ? n instanceof (window["HTMLElement"] || window["Element"]) : n && "object" == typeof n && 1 === n.nodeType && "string" == typeof n.nodeName;
            },
            isSVGElement: function (n) {
                return window["SVGElement"] && n instanceof window["SVGElement"];
            },
            isDefined: function (v) {
                return "undefined" != typeof v;
            },
            random: function (length) {
                var str = "", chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz", clen = chars.length;
                length || (length = 6);
                for (var i = 0; i < length; i++) str += chars.charAt(this.randomInt(0, clen - 1));
                return str;
            },
            randomInt: function (min, max) {
                return Math.floor(Math.random() * (max - min + 1)) + min;
            },
            inherit: function (child, parent) {
                function Ctor() {
                    this.constructor = child;
                }

                for (var key in parent) parent.hasOwnProperty(key) && (child[key] = parent[key]);
                Ctor.prototype = parent.prototype;
                child.prototype = new Ctor();
                child.__super__ = parent.prototype;
                return child;
            },
            trim: function (s) {
                return s ? s.trim ? s.trim() : s.replace(/^\s+|\s+$/gm, "") : "";
            },
            trigger: function (el, evt, detail) {
                if (el) {
                    detail = detail || {};
                    var e, opt = {
                        bubbles: !0,
                        cancelable: !0,
                        detail: detail
                    };
                    if ("undefined" != typeof CustomEvent) {
                        e = new CustomEvent(evt, opt);
                        el.dispatchEvent(e);
                    } else try {
                        e = document.createEvent("CustomEvent");
                        e.initCustomEvent(evt, !0, !0, detail);
                        el.dispatchEvent(e);
                    } catch (exp) {
                        this.log.error(exp);
                    }
                    return !0;
                }
                this.log.error("emply element passed in");
            },
            nextTick: function (f) {
                ("object" == typeof process && process.nextTick ? process.nextTick : function (task) {
                        setTimeout(task, 0);
                    })(f);
            },
            removeFromArray: function (arr, val) {
                var index = arr.indexOf(val);
                index > -1 && arr.splice(index, 1);
                return index;
            },
            debounce: function (func, wait, immediate) {
                var timeout, args, context, timestamp, result, later = function () {
                    var last = utils.now() - timestamp;
                    if (last < wait && last >= 0) timeout = setTimeout(later, wait - last); else {
                        timeout = null;
                        if (!immediate) {
                            result = func.apply(context, args);
                            timeout || (context = args = null);
                        }
                    }
                };
                return function () {
                    context = this;
                    args = arguments;
                    timestamp = utils.now();
                    var callNow = immediate && !timeout;
                    timeout || (timeout = setTimeout(later, wait));
                    if (callNow) {
                        result = func.apply(context, args);
                        context = args = null;
                    }
                    return result;
                };
            },
            throttle: function (func, wait, options) {
                var context, args, result, timeout = null, previous = 0;
                options || (options = {});
                var later = function () {
                    previous = options.leading === !1 ? 0 : utils.now();
                    timeout = null;
                    result = func.apply(context, args);
                    timeout || (context = args = null);
                };
                return function () {
                    var now = utils.now();
                    previous || options.leading !== !1 || (previous = now);
                    var remaining = wait - (now - previous);
                    context = this;
                    args = arguments;
                    if (remaining <= 0 || remaining > wait) {
                        if (timeout) {
                            clearTimeout(timeout);
                            timeout = null;
                        }
                        previous = now;
                        result = func.apply(context, args);
                        timeout || (context = args = null);
                    } else timeout || options.trailing === !1 || (timeout = setTimeout(later, remaining));
                    return result;
                };
            },
            ucfirst: function (string) {
                return string.charAt(0).toUpperCase() + string.slice(1);
            },
            escapeHtml: function (text) {
                var map = {
                    "&": "&amp;",
                    "<": "&lt;",
                    ">": "&gt;",
                    '"': "&quot;",
                    "'": "&#x27;",
                    "`": "&#x60;"
                };
                return (text + "").replace(/[&<>"']/g, function (m) {
                    return map[m];
                });
            }
        };
        utils.setDebugMode(!1);
        return utils;
    });

    AMapUI.define("lib/detect-global", ["./utils"], function (utils) {
        var global = this;
        return {
            load: function (name, req, onLoad, config) {
                for (var parts = name.split("|"), gVars = parts[0].split(","), finalMod = parts[1], i = 0, len = gVars.length; i < len; i++) {
                    var vname = utils.trim(gVars[i]);
                    if (global[vname]) {
                        onLoad(global[vname]);
                        return;
                    }
                }
                if (!finalMod) throw new Error("can't find: " + name);
                req([finalMod], function (value) {
                    onLoad(value);
                });
            }
        };
    });

    AMapUI.define("lib/$", ["lib/detect-global!jQuery,Zepto|" + (AMap.UA.mobile ? "zepto" : "jquery")], function ($) {
        return $;
    });

    AMapUI.define("lib/conf", ["module"], function (mod) {
        return mod.config();
    });

    AMapUI.define("lib/dom.utils", [], function () {
        var domUtils = {
            isCanvasSupported: function () {
                var elem = document.createElement("canvas");
                return !!(elem && elem.getContext && elem.getContext("2d"));
            },
            toggleClass: function (el, name, add) {
                add ? domUtils.addClass(el, name) : domUtils.removeClass(el, name);
            },
            addClass: function (el, name) {
                el && name && (domUtils.hasClassName(el, name) || (el.className += (el.className ? " " : "") + name));
            },
            removeClass: function (el, name) {
                function replaceFn(w, match) {
                    return match === name ? "" : w;
                }

                el && name && (el.className = el.className.replace(/(\S+)\s*/g, replaceFn).replace(/(^\s+|\s+$)/, ""));
            },
            hasClassName: function (ele, className) {
                var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
                return testClass.test(ele.className);
            },
            getElementsByClassName: function (className, tag, parent) {
                tag = tag || "*";
                parent = parent || document;
                if (parent.getElementsByClassName) return parent.getElementsByClassName(className);
                for (var current, elements = parent.getElementsByTagName(tag), returnElements = [], i = 0; i < elements.length; i++) {
                    current = elements[i];
                    domUtils.hasClassName(current, className) && returnElements.push(current);
                }
                return returnElements;
            }
        };
        return domUtils;
    });

    AMapUI.define("lib/event", ["lib/utils"], function (utils) {
        "use strict";
        function Event() {
            this.__evHash = {};
        }

        utils.extend(Event.prototype, {
            on: function (ev, listener, priority) {
                if (this.__multiCall(ev, listener, this.on)) return this;
                if (!ev) return this;
                var evHash = this.__evHash;
                evHash[ev] || (evHash[ev] = []);
                var list = evHash[ev], index = this.__index(list, listener);
                if (index < 0) {
                    "number" != typeof priority && (priority = 10);
                    for (var inps = list.length, i = 0, len = list.length; i < len; i++) if (priority > list[i].priority) {
                        inps = i;
                        break;
                    }
                    list.splice(inps, 0, {
                        listener: listener,
                        priority: priority
                    });
                }
                return this;
            },
            once: function (ev, listener, priority) {
                function oncefunc() {
                    self.__callListenser(listener, arguments);
                    self.off(ev, oncefunc);
                }

                if (this.__multiCall(ev, listener, this.once)) return this;
                var self = this;
                this.on(ev, oncefunc, priority);
                return this;
            },
            offAll: function () {
                for (var ev in this.__evHash) this.off(ev);
                this.__evHash = {};
                return this;
            },
            off: function (ev, listener) {
                if (this.__multiCall(ev, listener, this.off)) return this;
                var evHash = this.__evHash;
                if (evHash[ev]) {
                    var list = evHash[ev];
                    if ("undefined" == typeof listener) {
                        var c = list.length;
                        list.length = 0;
                        return c;
                    }
                    var index = this.__index(list, listener);
                    if (index >= 0) {
                        list.splice(index, 1);
                        return 1;
                    }
                    return 0;
                }
            },
            listenerLength: function (ev) {
                var evHash = this.__evHash, list = evHash[ev];
                return list ? list.length : 0;
            },
            emit: function (ev) {
                var args, list, evHash = this.__evHash, count = 0;
                list = evHash[ev];
                if (list && list.length) {
                    args = Array.prototype.slice.call(arguments, 1);
                    count += this.__callListenerList(list, args);
                }
                list = evHash["*"];
                if (list && list.length) {
                    args = Array.prototype.slice.call(arguments);
                    count += this.__callListenerList(list, args);
                }
                return count;
            },
            trigger: function (ev) {
                var args = Array.prototype.slice.call(arguments, 0);
                args.splice(1, 0, {
                    type: ev,
                    target: this
                });
                this.emit.apply(this, args);
            },
            triggerWithOriginalEvent: function (ev, originalEvent) {
                var args = Array.prototype.slice.call(arguments, 0);
                args[1] = {
                    type: ev,
                    target: originalEvent ? originalEvent.target : this,
                    originalEvent: originalEvent
                };
                this.emit.apply(this, args);
            },
            onDestroy: function (cb, priority) {
                this.on("__destroy", cb, priority);
                return this;
            },
            destroy: function () {
                if (!this.__destroying) {
                    this.__destroying = 1;
                    this.emit("__destroy", this);
                    this.offAll();
                    return this;
                }
            },
            __multiCall: function (ev, listener, func) {
                if (!ev) return !0;
                if (utils.isObject(ev) && "undefined" == typeof listener) {
                    for (var k in ev) func.call(this, k, ev[k]);
                    return !0;
                }
                var evs;
                utils.isArray(ev) ? evs = ev : "string" == typeof ev && (evs = ev.split(/[\s,]+/));
                if (evs && evs.length > 1) {
                    for (var i = 0, len = evs.length; i < len; i++) evs[i] && func.call(this, evs[i], listener);
                    return !0;
                }
                return !1;
            },
            __index: function (list, listener) {
                for (var index = -1, i = 0, len = list.length; i < len; i++) {
                    var ele = list[i];
                    if (ele.listener === listener) {
                        index = i;
                        break;
                    }
                }
                return index;
            },
            __callListenser: function (listener, args) {
                var func = null, contxt = null;
                if ("function" == typeof listener) {
                    func = listener;
                    contxt = this;
                } else if (2 == listener.length) {
                    func = listener[1];
                    contxt = listener[0];
                }
                return func ? [1, func.apply(contxt, args)] : [0, void 0];
            },
            __callListenerList: function (list, args) {
                if (!list || !list.length) return 0;
                list = [].concat(list);
                for (var cres, count = 0, i = 0, len = list.length; i < len; i++) {
                    cres = this.__callListenser(list[i].listener, args);
                    count += cres[0];
                    if (cres[1] === !1) break;
                }
                return count;
            }
        });
        return Event;
    });

    AMapUI.define("lib/underscore-tpl", [], function () {
        function escapeHtml(text) {
            var map = {
                "&": "&amp;",
                "<": "&lt;",
                ">": "&gt;",
                '"': "&quot;",
                "'": "&#x27;",
                "`": "&#x60;"
            };
            return (text + "").replace(/[&<>"']/g, function (m) {
                return map[m];
            });
        }

        function tmpl(text, data) {
            var settings = templateSettings, matcher = new RegExp([(settings.escape || noMatch).source, (settings.interpolate || noMatch).source, (settings.evaluate || noMatch).source].join("|") + "|$", "g"), index = 0, source = "__p+='";
            text.replace(matcher, function (match, escape, interpolate, evaluate, offset) {
                source += text.slice(index, offset).replace(escapeRegExp, escapeChar);
                index = offset + match.length;
                escape ? source += "'+\n((__t=(" + escape + "))==null?'':" + innerContextVarName + ".escape(__t))+\n'" : interpolate ? source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'" : evaluate && (source += "';\n" + evaluate + "\n__p+='");
                return match;
            });
            source += "';\n";
            settings.variable || (source = "with(obj||{}){\n" + source + "}\n");
            source = "var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n" + source + "return __p;\n";
            var render;
            try {
                render = new Function(settings.variable || "obj", innerContextVarName, source);
            } catch (e) {
                e.source = source;
                throw e;
            }
            var template = function (data) {
                return render.call(this, data, {
                    escape: escapeHtml,
                    template: tmpl
                });
            }, argument = settings.variable || "obj";
            template.source = "function(" + argument + "){\n" + source + "}";
            return data ? template(data) : template;
        }

        var templateSettings = {
            evaluate: /<%([\s\S]+?)%>/g,
            interpolate: /<%=([\s\S]+?)%>/g,
            escape: /<%-([\s\S]+?)%>/g
        }, noMatch = /(.)^/, escapes = {
            "'": "'",
            "\\": "\\",
            "\r": "r",
            "\n": "n",
            "\u2028": "u2028",
            "\u2029": "u2029"
        }, escapeRegExp = /\\|'|\r|\n|\u2028|\u2029/g, escapeChar = function (match) {
            return "\\" + escapes[match];
        }, innerContextVarName = "_amapui_tpl_cxt_";
        return tmpl;
    });

    AMapUI.define("lib/SphericalMercator", [], function () {
        function getScale(level) {
            scaleCache[level] || (scaleCache[level] = 256 * Math.pow(2, level));
            return scaleCache[level];
        }

        function project(lnglat) {
            var lat = Math.max(Math.min(maxLat, lnglat[1]), -maxLat), x = lnglat[0] * deg2rad, y = lat * deg2rad;
            y = Math.log(Math.tan(quadPI + y / 2));
            return [x, y];
        }

        function transform(point, scale) {
            scale = scale || 1;
            var a = half2PI, b = .5, c = -a, d = .5;
            return [scale * (a * point[0] + b), scale * (c * point[1] + d)];
        }

        function unproject(point) {
            var lng = point[0] * rad2deg, lat = (2 * Math.atan(Math.exp(point[1])) - Math.PI / 2) * rad2deg;
            return [parseFloat(lng.toFixed(6)), parseFloat(lat.toFixed(6))];
        }

        function untransform(point, scale) {
            var a = half2PI, b = .5, c = -a, d = .5;
            return [(point[0] / scale - b) / a, (point[1] / scale - d) / c];
        }

        function lngLatToPointByScale(lnglat, scale, round) {
            var p = transform(project(lnglat), scale);
            if (round) {
                p[0] = Math.round(p[0]);
                p[1] = Math.round(p[1]);
            }
            return p;
        }

        function lngLatToPoint(lnglat, level, round) {
            return lngLatToPointByScale(lnglat, getScale(level), round);
        }

        function pointToLngLat(point, level) {
            var scale = getScale(level), untransformedPoint = untransform(point, scale);
            return unproject(untransformedPoint);
        }

        function haversineDistance(point1, point2) {
            var cos = Math.cos, lat1 = point1[1] * deg2rad, lon1 = point1[0] * deg2rad, lat2 = point2[1] * deg2rad, lon2 = point2[0] * deg2rad, dLat = lat2 - lat1, dLon = lon2 - lon1, a = (1 - cos(dLat) + (1 - cos(dLon)) * cos(lat1) * cos(lat2)) / 2;
            return earthDiameter * Math.asin(Math.sqrt(a));
        }

        var scaleCache = {}, earthDiameter = 12756274, deg2rad = Math.PI / 180, rad2deg = 180 / Math.PI, quadPI = Math.PI / 4, maxLat = 85.0511287798, half2PI = .5 / Math.PI;
        return {
            haversineDistance: haversineDistance,
            getScale: getScale,
            lngLatToPointByScale: lngLatToPointByScale,
            pointToLngLat: pointToLngLat,
            lngLatToPoint: lngLatToPoint
        };
    });

    AMapUI.define("_auto/lib", function () {
    });
    AMapUI.requireConf = {
        "skipDataMain": true,
        "config": {
            "lib/conf": {
                "productWebRoot": "//webapi.amap.com/ui",
                "mainVersion": "1.0",
                "patchVersion": "11",
                "fullVersion": "1.0.11"
            }
        },
        "map": {
            "*": {
                "css": "polyfill/require/require-css/css",
                "text": "polyfill/require/require-text/text",
                "json": "polyfill/require/require-json/json"
            }
        },
        "shim": {
            "jquery": {
                "exports": "$"
            },
            "zepto": {
                "exports": "$"
            }
        },
        "paths": {
            "jquery": "plug/ext/jquery-1.12.4.min",
            "zepto": "plug/ext/zepto-1.2.0.min"
        },
        "baseUrl": "//webapi.amap.com/ui/1.0/",
        "baseUrlProtocol": null
    };
    AMapUI.libConf = AMapUI.requireConf.config["lib/conf"];
    AMapUI.uiMods = [
        "ui/control/BasicControl",
        "ui/geo/DistrictCluster",
        "ui/geo/DistrictExplorer",
        "ui/misc/MarkerList",
        "ui/misc/MobiCityPicker",
        "ui/misc/PathSimplifier",
        "ui/misc/PoiPicker",
        "ui/misc/PointSimplifier",
        "ui/misc/PointSimplifr",
        "ui/misc/PositionPicker",
        "ui/overlay/AwesomeMarker",
        "ui/overlay/SimpleInfoWindow",
        "ui/overlay/SimpleMarker",
        "ui/overlay/SvgMarker"
    ];
    !function (ns, window) {
        function getParameterByName(name) {
            var match = new RegExp("[?&]" + name + "=([^&]*)").exec(window.location.search);
            return match && decodeURIComponent(match[1].replace(/\+/g, " "));
        }

        function getAMapKey() {
            return AMap.User ? AMap.User.key : "";
        }

        function arrForEach(array, callback, thisArg) {
            if (array.forEach) return array.forEach(callback, thisArg);
            for (var i = 0, len = array.length; i < len; i++) callback.call(thisArg, array[i], i);
        }

        function extendObj(dst) {
            dst || (dst = {});
            arrForEach(Array.prototype.slice.call(arguments, 1), function (source) {
                if (source) for (var prop in source) source.hasOwnProperty(prop) && (dst[prop] = source[prop]);
            });
            return dst;
        }

        var libConf = ns.libConf, reqConf = ns.requireConf, uiMods = ns.uiMods || [];
        ns.docProtocol = "https:" === document.location.protocol ? "https:" : "http:";
        window.AMapUIProtocol && (ns.docProtocol = window.AMapUIProtocol);
        window.AMapUIBaseUrl && (reqConf.baseUrl = window.AMapUIBaseUrl);
        0 === reqConf.baseUrl.indexOf("//") && (reqConf.baseUrl = ns.docProtocol + reqConf.baseUrl);
        var getAbsoluteUrl = function () {
            var div = document.createElement("div");
            div.innerHTML = "<a></a>";
            return function (url) {
                div.firstChild.href = url;
                div.innerHTML = div.innerHTML;
                return div.firstChild.href;
            };
        }();
        ns.getAbsoluteUrl = getAbsoluteUrl;
        getParameterByName("debugAMapUI") && (libConf.debugMode = !0);
        var isDebugMode = !!libConf.debugMode;
        ns.version = libConf.version = libConf.mainVersion + "." + libConf.patchVersion;
        if (!isDebugMode) {
            reqConf.bundles || (reqConf.bundles = {});
            for (var reqBundles = reqConf.bundles, i = 0, len = uiMods.length; i < len; i++) {
                var uiModId = uiMods[i];
                reqBundles[uiModId] || (reqBundles[uiModId] = []);
                reqBundles[uiModId].push(uiMods[i] + "/main");
            }
        }
        ns.getBaseUrl = function () {
            return reqConf.baseUrl;
        };
        reqConf.urlArgs = function (id, url) {
            var args = [];
            args.push("v=" + ns.version);
            isDebugMode && args.push("_t=" + Date.now());
            if (0 === id.indexOf("ui/")) {
                var parts = id.split("/");
                (3 === parts.length || 4 === parts.length && "main" === parts[3]) && args.push("mt=ui");
                args.push("key=" + getAMapKey());
            }
            return (url.indexOf("?") < 0 ? "?" : "&") + args.join("&");
        };
        var requireContentName = "amap-ui-" + ns.version;
        ns.require = ns.requirejs.config(extendObj({
            context: requireContentName
        }, reqConf));
        ns.UI = ns.UI || {};
        ns.findDefinedId = function (test, thisArg) {
            var requirejs = ns.requirejs;
            if (!requirejs.s || !requirejs.s.contexts) return null;
            var contexts = requirejs.s.contexts[requireContentName];
            if (!contexts) return null;
            var defined = contexts.defined;
            for (var k in defined) if (defined.hasOwnProperty(k) && test.call(thisArg, k)) return k;
            return null;
        };
        ns.weakDefine = function (name) {
            return ("string" != typeof name || !ns.require.defined(name)) && ns.define.apply(ns, arguments);
        };
        ns.defineTpl = function (name) {
            if ("string" != typeof name) throw new Error("tpl name is supposed to be a string");
            var args = Array.prototype.slice.call(arguments, 0);
            args[0] = "polyfill/require/require-text/text!" + args[0];
            return ns.define.apply(ns, args);
        };
        ns.setDomLibrary = function ($) {
            ns.require.undef("lib/$");
            ns.define("lib/$", [], function () {
                return $;
            });
        };
        ns.inspectDomLibrary = function ($) {
            var isJQuery = $.fn && $.fn.jquery, isZepto = $ === window.Zepto;
            return {
                isJQuery: !!isJQuery,
                isZepto: isZepto,
                version: isJQuery ? $.fn.jquery : "unknown"
            };
        };
        ns.versionCompare = function (left, right) {
            if (typeof left + typeof right != "stringstring") return !1;
            for (var a = left.split("."), b = right.split("."), i = 0, len = Math.max(a.length, b.length); i < len; i++) {
                if (a[i] && !b[i] && parseInt(a[i], 10) > 0 || parseInt(a[i], 10) > parseInt(b[i], 10)) return 1;
                if (b[i] && !a[i] && parseInt(b[i], 10) > 0 || parseInt(a[i], 10) < parseInt(b[i], 10)) return -1;
            }
            return 0;
        };
        ns.checkDomLibrary = function ($, opts) {
            opts = extendObj({
                minJQueryVersion: "1.3"
            }, opts);
            var libInfo = ns.inspectDomLibrary($);
            return !(libInfo.isJQuery && ns.versionCompare(libInfo.version, opts.minJQueryVersion) < 0) || "jQuery当前版本(" + libInfo.version + ")过低，请更新到 " + opts.minJQueryVersion + " 或以上版本！";
        };
        ns.setDebugMode = function (on) {
            on = !!on;
            ns.debugMode = on;
            window.AMapUI_DEBUG = on;
            ns.require(["lib/utils"], function (utils) {
                utils.setDebugMode(ns.debugMode);
                ns.debugMode && utils.logger.warn("Debug mode!");
            });
        };
        ns.setDebugMode(isDebugMode);
        ns.load = function (unames, callback, opts) {
            ns.require(["lib/utils"], function (utils) {
                utils.isArray(unames) || (unames = [unames]);
                for (var uname, mods = [], modNameFilter = opts && opts.modNameFilter, i = 0, len = unames.length; i < len; i++) {
                    uname = unames[i];
                    modNameFilter && (uname = modNameFilter.call(null, uname));
                    ns.debugMode && 0 === uname.indexOf("ui/") && 3 === uname.split("/").length && (uname += "/main");
                    mods.push(uname);
                }
                ns.require(mods, callback);
            });
        };
        ns.loadCss = function (urls, cb) {
            ns.load(urls, cb, {
                modNameFilter: function (url) {
                    return "css!" + getAbsoluteUrl(url);
                }
            });
        };
        ns.loadJs = function (urls, cb) {
            ns.load(urls, cb, {
                modNameFilter: function (url) {
                    return getAbsoluteUrl(url);
                }
            });
        };
        ns.loadText = function (urls, cb) {
            ns.load(urls, cb, {
                modNameFilter: function (url) {
                    return "text!" + getAbsoluteUrl(url);
                }
            });
        };
        ns.loadUI = function (unames, cb) {
            ns.load(unames, cb, {
                modNameFilter: function (uname) {
                    return "ui/" + uname;
                }
            });
        };
        ns.loadTpl = function (url, data, cb) {
            ns.require(["lib/underscore-tpl", "text!" + getAbsoluteUrl(url)], function (template, text) {
                cb(template(text, data), {
                    template: template,
                    text: text
                });
            });
        };
        isDebugMode || setTimeout(function () {
            ns.loadJs(ns.docProtocol + "//webapi.amap.com/count?type=UIInit&k=" + getAMapKey());
        }, 0);
    }(AMapUI, window);
    window.AMapUI = AMapUI;
}(window));